package com.itheima.d9_interface_attention;
/*
    接口其他注意事项（了解）
        1、一个接口继承多个接口，如果多个接口中存在方法签名冲突，则此时不支持多继承。
        2、一个类实现多个接口，如果多个接口中存在方法签名冲突，则此时不支持多实现。
        3、一个类继承了父类，又同时实现了接口，父类中和接口中有同名的默认方法，实现类会优先用父类的。和签名无关
        4、一个类实现了多个接口，多个接口中存在同名的默认方法，可以不冲突，这个类重写该方法即可。
 */
public class Test2 {
    public static void main(String[] args) {
        new star().show();
    }
}

interface A{
    void show();

    String sing();

    default String jump(){return null;}
}
interface B{
    void show();

// void sing();

    default String jump(){return null;}
}
interface C extends A,B{
    @Override
    default String jump() {
        return null;
    }
}

class star  implements C{
    @Override
    public void show() {
        System.out.println("我就是明日之星");
    }

    @Override
    public String sing() {
        return null;
    }
}




class AA{
    void show(){}
}
class BB extends AA{
    void show(){}
}
class CC extends BB{

}

/*
        1、一个接口继承多个接口，如果多个接口中存在方法签名冲突，则此时不支持多继承，因为最终是要给
        类重写的，多个不一致的方法，类不知该重写哪一个。但如果多个接口中方法名和签名一致，可以
        多继承，就把多个完全一致的方法融合，类就无所谓，反正都一样，重写呗，接口就是融合。类就是重写
        2、一个类实现多个接口，如果多个接口中存在方法签名冲突，则此时不支持多实现，同上原因，因为不知道该
        重写哪一个。
        3、一个类继承了父类，又同时实现了接口，父类中和接口中有同名的默认方法，实现类会优先用父类的。和签名无关
        4、一个类实现了多个接口，多个接口中存在同名的默认方法，可以不冲突，前提是这个类重写该方法即可，
        ，因为接口中是没有方法重写的概念的，有方法体的方法无法融合，但是类的继承就是重写，。


*/






